iT邦幫忙

1

[快速入門前端 13] CSS 選擇器 (3) Pseudo-Classes 偽類 - 動態偽類

  • 分享至 

  • xImage
  •  

Pseudo-Classes 偽類 (虛擬類別)

有別於我們之前提到的 Class 有點像我們自定義將元素分組,偽類是依照該元素的特殊狀態進行分類,並以 : 為前綴符號在 CSS 中進行選擇,例如 a:visited{} 是指使用者已點選過的 a 標籤。在偽類選擇器中有很多不同的特殊狀態,而這些狀態又依性質分為動態偽類、目標偽類、語言偽類等等,接下來就讓我們一一介紹吧!

偽類的寫法為 選擇器:偽類:符號與偽類間不可空格,且偽類不可單獨存在,必須與其他選擇器一起使用

Dynamic Pseudo-Classes 動態偽類

動態偽類是指透過使用者與網頁互動的狀態而產生的偽類類別,例如滑鼠移動到某元素時,該元素會擁有 hover 這個偽類。

選擇器 作用 常用於 搭配元素
:link 未訪問過的連結 超連結未被訪問時的顏色 只能用於 a 連結相關元素
:visited 已訪問過的連結 已訪問的連結呈灰色 只能用於 a 連結相關元素
:hover 滑鼠懸在至元素上時 滑鼠滑過按鈕或超連結的效果 可用於所有元素
:active 點該擊元素時 點擊時的效果 可用於所有元素
:focus 該元素被 focus 時 表單元素擁有焦點時的效果 只能用於表單輸入類元素

語法:

a:link { /* 未點過的 a 標籤連結 */
    屬性名: 屬性值;
}
a:visited { /* 已點過的 a 標籤連結 */
    屬性名: 屬性值;
}
a:hover { /* 滑鼠停在 a 元素上方時 */
    屬性名: 屬性值;
}
a:active { /* 滑鼠點擊 a 元素時 */
    屬性名: 屬性值;
}
a:focus { { /* 網頁焦點在 a 元素時 */
    屬性名: 屬性值;
}

範例:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <style>
        a:link {
            color: blue;
        }
        a:visited {
            color: gray;
        }
        a:hover {
            color: green;
        }
        a:active {
            color: red;
        }
    </style>
  </head>
  <body>
    <a href="https://tw.news.yahoo.com/">看新聞</a>
  </body>
</html>

在這個範例中,使用者的行為造成元素偽類發生改變:

  1. 頁面剛載入時連結沒有被點過,此時只有 :link 狀態
    https://ithelp.ithome.com.tw/upload/images/20230518/20158509bpbObfYcpy.png
  2. 滑鼠移動到 <a> 上,元素同時擁有 :link:hover 狀態
    https://ithelp.ithome.com.tw/upload/images/20230518/20158509NKQS2QmIBy.png
  3. 點選 <a> 但未放開,觸發 :active,同時擁有 :link:hover:active 狀態
    https://ithelp.ithome.com.tw/upload/images/20230518/201585090KsdUsCJRb.png
  4. 放開滑鼠,等待頁面跳轉,此時擁有 :link:hover 狀態
    https://ithelp.ithome.com.tw/upload/images/20230518/20158509RZ2MlGyJ3P.png
  5. 頁面跳轉成功
  6. 返回頁面,連結已被點過,變為 :visited 狀態
    https://ithelp.ithome.com.tw/upload/images/20230518/20158509diccBPBsbp.png

在使用動態偽類時因為經常出現某同時擁有多種狀態的情況(如上範例),所以我們需要特別注意 CSS 中樣式的先後順序,避免出現衝突。

在動態偽類中,若需要同時設定多個樣式,建議以 :link:visited:hover:active 為順序

範例 ( :focus ):

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <style>
      input:focus {
        background-color: yellowgreen;
      }
    </style>
  </head>
  <body>
    <h3>很多 input 框</h3>
    <input type="text"><br/><br/>
    <input type="text"><br/><br/>
    <input type="text">
  </body>
</html>

上一篇:[快速入門前端 12] CSS 選擇器 (2) 複合選擇器 — 後代選擇器及兄弟選擇器
下一篇:[快速入門前端 14] CSS 選擇器 (4) Pseudo-Classes 偽類 - 結構偽類
系列文章列表:[快速入門前端] 系列文章索引列表


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言